package soporte;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

/**
 * @project DLC Final / UTN FRC 2013
 * @date Febrero de 2013
 *
 * @author Gonzalo Arribere
 * @author Gustavo Morales
 * @author Pablo Moreno
 *
 * Esta clase es un gestor de las conexiones solicitadas a una base de datos
 * MySQL, la cual se encarga de gestionar todas las acciones relacionadas con
 * las conexiones a la base de datos.
 */
public abstract class MySQLConnexion {

    private static String FILE_SETTINGS = "D:\\Mis documentos\\NetBeansProjects\\utn-dlc-final-2013\\trunk\\DLC-Modelo-Vectorial\\settings\\dbsettings.inf";
    private static String mQueryString = "jdbc:mysql://%s/%s?user=%s&password=%s";
    private static String mClassName;
    private static String mServer;  //Nombre del servidor.
    private static String mDBName;  //Nombre de la base de datos.
    private static String mUserName;//Nombre de usuario de la bd.
    private static String mPassword;//Contrasenia
    private static boolean mInited = false;//Estado: iniciada o no.
    private static Connection mConnexion = null;

    private static void initSettings() {
        if (!mInited) {
            Properties dbProperties = new Properties();
            try {
                dbProperties.load(new FileInputStream(FILE_SETTINGS));
                mInited = true;
            } catch (IOException e) {
                System.out.println(e.getStackTrace());
            }
            mClassName = dbProperties.getProperty("classname");
            mServer = dbProperties.getProperty("server");
            mDBName = dbProperties.getProperty("dbname");
            mUserName = dbProperties.getProperty("user");
            mPassword = dbProperties.getProperty("password");
        }
    }

    public static Connection getConnexion() {
        if (mConnexion == null) {
            initSettings();

            try {
                Class.forName(mClassName);
                mConnexion = DriverManager.getConnection(String.format(mQueryString,
                        mServer, mDBName, mUserName, mPassword));
                mConnexion.setAutoCommit(false);
            } catch (Exception e) {
                System.out.println(e.getStackTrace());
            }
        }
        return mConnexion;
    }
}